25 research outputs found

    Essential properties of open development communities : supporting growth, collaboration, and learning

    Get PDF
    Open development has emerged as a method for creating versatile and complex products through free collaboration of individuals. This free collaboration forms globally distributed teams. Similarly, it is common today to view business and other human organizations as ecosystems, where several participating companies and organizations co-operate and compete together. For example, open source software development is one area where community driven development provides a plausible platform for both development of products and establishing a software ecosystem where a set of businesses contribute their own innovations. Equally, open learning environments and open innovation platforms are also gaining ground. While such initiatives are not limited to any specific area, they typically offer a technological, legal, social, and economic framework for development. Moreover, they always rely on the associated community, the people. Open development would not exist without the active participation of keen developers. However, people are fickle. Firstly, as one of the main driving forces for participation is own interest, "scratching your own itch", the question of how to grow and support open development rises to the forefront. Further it leads to ask what contributes to making open development successful. This is especially crucial when the product has business value. Secondly, as open development has its own governance methods and development guidelines, one is led to ask, how learning these could be facilitated, and how community participation could be supported. This doctoral dissertation gives insight on tools and techniques that help in dealing with the multi-faceted challenge of working with and growing an open development community. It discusses these through a framework covering the five key aspects of open development: the people in and the purpose of the community, the product developed by the community and the policies and the platform the community needs to function. The thesis presents work on establishing and monitoring an open development community in two different settings: a Free/Libre/Open Source Software(FLOSS) business environment and open education. The research covers going ahead with open development within the FLOSS ecosystem both from the point of view of the product and the business environment. Additionally, this thesis offers research on how developers can learn open development methods. It introduces academic open development communities through which the developers can adopt collaborative development skills. The research presented paves the way for gaining further knowledge in growing thriving open development communities

    Does Cyclomatic or Cognitive Complexity Better Represents Code Understandability? An Empirical Investigation on the Developers Perception

    Full text link
    Background. Code understandability is fundamental. Developers need to clearly understand the code they are modifying. A low understandability can increase the amount of coding effort and misinterpretation of code has impact on the entire development process. Ideally, developers should write clear and understandable code with the least possible effort. Objective. The goal of this work is to investigate if the McCabe Cyclomatic Complexity or the Cognitive Complexity can be a good predictor for the developers' perceived code understandability to understand which of the two complexities can be used as criteria to evaluate if a piece of code is understandable. Method. We designed and conducted an empirical study among 216 junior developers with professional experience ranging from one to four years. We asked them to manually inspect and rate the understandability of 12 Java classes that exhibit different levels of Cyclomatic and Cognitive Complexity. Results. Cognitive Complexity slightly outperforms the Cyclomatic Complexity to predict the developers' perceived understandability. Conclusion. The identification of a clear and validated measure for Code Complexity is still an open issue. Neither the old fashioned McCabe Cyclomatic Complexity and the most recent Cognitive Complexity are good predictors for code understandability, at least when considering the complexity perceived by junior developers

    Bachelor\u27s Thesis Seminar In Computer Sciences And Information Technology

    Get PDF
    A Bachelor’s thesis is typically an individually written literature review on a scientifically relevant topic. Additionally, some theses also describe empirical work or report an experiment. Firstly, we introduce how Bachelor’s theses are supervised in a joint thesis seminar for Computer Sciences and Information Technology at our university. The thesis seminar is organized three times a year. It consists of six small group meetings led by a supervisor and contains compulsory pre- and post-assignments and active peer discussions. In 2022, there were in total of 187 students participating in the spring, summer and autumn seminars. Secondly, we give an overview of the 98 completed theses. We classify the theses using ACM’s Computing Classification System and analyze keywords, the number of references and some other bibliometrics to learn about the students and the potential effects of their different study orientations. We also analyze 14 theses that reported practical work, like the implementation of an algorithm or using existing software tools. The main result of our work is to give a research-based view on the supervision of Bachelor’s theses, the organisation of the thesis seminar, and the bibliometrics of the completed thesis

    Entering an ecosystem: The hybrid OSS landscape from a developer perspective

    Get PDF
    Hybrid Open Source Software projects are virtual organizations that express characteristics of both static and dynamic behavior. They are choreographed through complex organizational structures that mix centralized governance with distributed community drivenness. While many communities use standard software tools to support their development processes, each community has its own ways of working and invisible power structures that influence how contributions are submitted, how they are verified and how decisions about the long-term direction of the software product are made. Navigating this environment is especially challenging for new developers who need to prove their abilities to gain rights to make contributions. This paper provides a viewpoint on the factors that influence a new developer's perception of the hybrid OSS developer community landscape. We apply an established developmental theory to build an initial model for the developer's context and discuss the model's validation, providing its practical and theoretical implications for building and managing on-line developer communities.Peer reviewe

    Revisiting Continuous Deployment Maturity : A Two-Year Perspective

    Get PDF
    Background: Achieving a steady stream of small releases and employing practices such as continuous deployment requires maturity in company processes. Maturity models provide one approach for companies to pinpoint areas of improvement by providing a position and hints to reflect on. Incorporating maturity models with agile software development and continuous deployment has its challenges, though. Aims: The focus of the study is in understanding the evolution of software processes towards continuous deployment in an industry organization over time when a maturity model is used as a yardstick in evaluation. Method: An embedded case study by design, the study utilizes and replicates a survey on the state of software projects in a large Finnish software company, Solita. The survey was initially conducted in 2015 with responses from 35 projects and now replicated in 2017 with responses from 43 projects. Both quantitative and qualitative approaches for survey responses are used in the analysis. Results: Maturity of software processes in the case company show improvement in deployment and in monitoring, albeit short of statistical significance. Technological advances in the application of cloud computing have likely spurred development in these areas. Capability in processes related to test automation and quality has not changed much in two years. Conclusions: Maintaining maturity in software processes requires constant attention as impressions on process quality can gradually diminish. Projects which are built on a compatible technology stack have a greater chance in achieving continuous deployment and thus being more mature. Customer preferences also make a difference in the ability to reach certain maturity levels.Peer reviewe

    Managing and Composing Teams in Data Science: An Empirical Study

    Get PDF
    Data science projects have become commonplace over the last decade. During this time, the practices of running such projects, together with the tools used to run them, have evolved considerably. Furthermore, there are various studies on data science workflows and data science project teams. However, studies looking into both workflows and teams are still scarce and comprehensive works to build a holistic view do not exist. This study bases on a prior case study on roles and processes in data science. The goal here is to create a deeper understanding of data science projects and development processes. We conducted a survey targeted at experts working in the field of data science (n=50) to understand data science projects’ team structure, roles in the teams, utilized project management practices and the challenges in data science work. Results show little difference between big data projects and other data science. The found differences, however, give pointers for future research on how agile data science projects are, and how important is the role of supporting project management personnel. The current study is work in progress and attempts to spark discussion and new research directions.acceptedVersionPeer reviewe

    DevOps in practice : A multiple case study of five companies

    Get PDF
    Context: DevOps is considered important in the ability to frequently and reliably update a system in operational state. DevOps presumes cross-functional collaboration and automation between software development and operations. DevOps adoption and implementation in companies is non-trivial due to required changes in technical, organisational and cultural aspects. Objectives: This exploratory study presents detailed descriptions of how DevOps is implemented in practice. The context of our empirical investigation is web application and service development in small and medium sized companies. Method: A multiple-case study was conducted in five different development contexts with successful DevOps implementations since its benefits, such as quick releases and minimum deployment errors, were achieved. Data was mainly collected through interviews with 26 practitioners and observations made at the companies. Data was analysed by first coding each case individually using a set of predefined themes and thereafter perform a cross-case synthesis. Results: Our analysis yielded some of the following results: (I) software development team attaining ownership and responsibility to deploy software changes in production is crucial in DevOps. (ii) toolchain usage and support in deployment pipeline activities accelerates the delivery of software changes, bug fixes and handling of production incidents. (ii) the delivery speed to production is affected by context factors, such as manual approvals by the product owner (iii) steep learning curve for new skills is experienced by both software developers and operations staff, who also have to cope with working under pressure. Conclusion: Our findings contributes to the overall understanding of DevOps concept, practices and its perceived impacts, particularly in small and medium sized companies. We discuss two practical implications of the results.Peer reviewe

    Essential properties of open development communities : supporting growth, collaboration, and learning

    Get PDF
    Open development has emerged as a method for creating versatile and complex products through free collaboration of individuals. This free collaboration forms globally distributed teams. Similarly, it is common today to view business and other human organizations as ecosystems, where several participating companies and organizations co-operate and compete together. For example, open source software development is one area where community driven development provides a plausible platform for both development of products and establishing a software ecosystem where a set of businesses contribute their own innovations. Equally, open learning environments and open innovation platforms are also gaining ground. While such initiatives are not limited to any specific area, they typically offer a technological, legal, social, and economic framework for development. Moreover, they always rely on the associated community, the people. Open development would not exist without the active participation of keen developers. However, people are fickle. Firstly, as one of the main driving forces for participation is own interest, "scratching your own itch", the question of how to grow and support open development rises to the forefront. Further it leads to ask what contributes to making open development successful. This is especially crucial when the product has business value. Secondly, as open development has its own governance methods and development guidelines, one is led to ask, how learning these could be facilitated, and how community participation could be supported. This doctoral dissertation gives insight on tools and techniques that help in dealing with the multi-faceted challenge of working with and growing an open development community. It discusses these through a framework covering the five key aspects of open development: the people in and the purpose of the community, the product developed by the community and the policies and the platform the community needs to function. The thesis presents work on establishing and monitoring an open development community in two different settings: a Free/Libre/Open Source Software(FLOSS) business environment and open education. The research covers going ahead with open development within the FLOSS ecosystem both from the point of view of the product and the business environment. Additionally, this thesis offers research on how developers can learn open development methods. It introduces academic open development communities through which the developers can adopt collaborative development skills. The research presented paves the way for gaining further knowledge in growing thriving open development communities
    corecore